package com.cykj.user.mapper;

import com.cykj.common.entity.*;
import com.cykj.user.vo.CareerExpectVO;
import com.cykj.user.vo.RecruitInfoVO;
import com.cykj.user.vo.UserVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @BelongsProject: smart_recruit_backend
 * @BelongsPackage: com.cykj.user.mapper
 * @Author: 浮行
 * @CreateTime: 2025-08-16 10:00
 * @Description: TODO
 * @Version: 1.0
 */
@Mapper
public interface UserMapper {
    /**
    * @Description: 用户注册 
    * @Param: [userVO]
    * @return: java.lang.Integer
    */
    Integer enroll(@Param("userVO") UserVO userVO);
    /**
    * @Description: 用户登录-账号密码
    * @Param: [userVO]
    * @return: com.cykj.common.entity.UserDO
    */
    UserDO login (@Param("userVO") UserVO userVO);
    /**
    * @Description: 获取临时数据 
    * @Param: [userVO]
    * @return: com.cykj.common.entity.UserDO
    */
    UserDO getEphemeralData(@Param("userId")Integer userId);
    /**
    * @Description: 修改用户姓名,电话号码,年龄信息
    * @Param: [userVO]
    * @return: java.lang.Integer
    */
    Integer update(@Param("userVO") UserVO userVO);
    /**
    * @Description: 修改用户密码
    * @Param: [userVO]
    * @return: java.lang.Integer
    */
    Integer updatePassword(@Param("userVO") UserVO userVO);
    /**
    * @Description: 专门查询用户密码
    * @Param: [userVO]
    * @return: com.cykj.common.entity.UserDO
    */
    UserDO selectUserPassword(@Param("userVO") UserVO userVO);
    

    Integer getCareerExpectData(@Param("userVO")UserVO userVO);

    List<JobTypeDO> getPositionType();

    List<RegionDO> getFirst();

    List<JobDO> getJobsByTypeId(@Param("jobTypeId")Integer jobTypeId);

    List<RegionDO> getCountiesByProvinceId(@Param("provinceId")Integer provinceId);

    List<IndustryDO> getIndustrys();

    Integer insertCareerExpect(@Param("careerExpectVO")CareerExpectVO careerExpectVO);

    Integer updateUserInfo(@Param("careerExpectVO")CareerExpectVO careerExpectVO);

    Integer submitUserInfo(@Param("userVO")UserVO userVO);

    List<CareerExpectDO> getCareerExpectByUserId(@Param("userId")Integer userId);

    RegionDO getRegion(@Param("regionId")Integer regionId);

    List<RecruitInfoDO> recommendedRecruit(@Param("recruitInfoVO")RecruitInfoVO recruitInfoVO);

    Integer deleteCareerExpect(@Param("expectId")Integer expectId);

    Integer addCareerExpect(@Param("careerExpectVO")CareerExpectVO careerExpectVO);

    Integer updateCareerExpectationRegion(@Param("careerExpectVO")CareerExpectVO careerExpectVO);

    Integer updateCareerExpectationRegionIsNull(@Param("careerExpectVO")CareerExpectVO careerExpectVO);

    RecruitInfoDO getRecruitAndElse(@Param("recruitId")Integer recruitId,@Param("userId")Integer userId);

    CompanyDO getCompanyInfoByCompanyId(@Param("companyId")Integer companyId);

    List<RecruitInfoDO> search(@Param("searchKeyword")String searchKeyword);

    List<InterviewDetailDO> getInterview(@Param("userId")Integer userId);

    InterviewDetailDO getInterviewDeta(@Param("bookingId")Integer bookingId);

    List<OrderDO> getOrderByUserId(@Param("userId")Integer userId);

    OrderDO getOrderInfo(@Param("orderId")Integer orderId);

    String getCompanyLocationInfo(@Param("companyId")Integer companyId);

    Integer collectRecruit(@Param("userId")Integer userId, @Param("recruitId")Integer recruitId);

    Integer deleteRecruit(@Param("userId")Integer userId, @Param("recruitId")Integer recruitId);
}
